#include "head.h"
/*
线程的状态分为结合态和分离态：

结合态：默认情况下，线程是结合态的，线程结束后需要使用 pthread_join 进行资源回收，否则会造成资源泄漏。
分离态：如果线程被设置为分离态，线程结束时资源会自动由操作系统回收，无需使用 pthread_join。

#include <pthread.h>

int pthread_detach(pthread_t thread);

功能:
	使用 `pthread_detach` 可以将一个线程设置为分离态，避免手动回收线程资源。
参数:
	pthread: 线程的ID
返回值:
	成功 0
	失败 错误码
*/

// 通讯变量
int smg = 50; 


void * func_1(void *val)
{
    // 每次递减
    while (smg)
    {
        sleep(1);
        smg--;
    }
    
}

void * func_2(void *val)
{
    int my_smg = smg;
    while (smg)
    {
        if(my_smg != smg)
        {
            printf("当前值 = %d\n" , smg);
            my_smg = smg;
        }
    }
}

int main(int argc, char const *argv[])
{
    pthread_t tid_1 = 0;
    pthread_t tid_2 = 0;

    // 创建线程
    pthread_create( &tid_1 , NULL , func_1 , (void * )&tid_1);
    pthread_create( &tid_2 , NULL , func_2 , (void * )&tid_2);

    // 设定分离态
    pthread_detach(tid_1);
    pthread_detach(tid_2);
    // 回收线程
    // pthread_join( tid_1 , NULL );
    // pthread_join( tid_2 , NULL );

    while (1)
    {
        
    }
    

    return 0;
}
